document.addEventListener('DOMContentLoaded', function () {
    const registerForm = document.getElementById('registerForm');
    const messageArea = document.getElementById('messageArea');

    if (registerForm) {
        registerForm.addEventListener('submit', async function (event) {
            event.preventDefault(); // 阻止表单默认提交行为

            const usernameInput = document.getElementById('username');
            const passwordInput = document.getElementById('password');
            const confirmPasswordInput = document.getElementById('confirmPassword');
            // const emailInput = document.getElementById('email'); // 如果有邮箱
            
            // 获取选择的角色
            const roleInputs = document.getElementsByName('role');
            let selectedRole = 'user'; // 默认为普通用户
            for (const roleInput of roleInputs) {
                if (roleInput.checked) {
                    selectedRole = roleInput.value;
                    break;
                }
            }

            const username = usernameInput.value.trim();
            const password = passwordInput.value;
            const confirmPassword = confirmPasswordInput.value;
            // const email = emailInput ? emailInput.value.trim() : null; // 如果有邮箱

            // --- 前端校验 ---
            if (!username || username.length < 3 || username.length > 50) {
                displayMessage('用户名长度必须在3到50个字符之间。', 'danger');
                usernameInput.focus();
                return;
            }
            if (!password || password.length < 6 || password.length > 100) {
                displayMessage('密码长度必须在6到100个字符之间。', 'danger');
                passwordInput.focus();
                return;
            }
            if (password !== confirmPassword) {
                displayMessage('两次输入的密码不一致。', 'danger');
                confirmPasswordInput.focus();
                return;
            }
            // if (email && !isValidEmail(email)) { // 如果有邮箱，并需要校验格式
            //     displayMessage('请输入有效的邮箱地址。', 'danger');
            //     emailInput.focus();
            //     return;
            // }

            // 准备请求数据
            const registrationData = {
                username: username,
                password: password,
                role: selectedRole // 添加角色字段
                // email: email // 如果有邮箱
            };

            // 清空消息区域
            clearMessage();
            // 禁用提交按钮，防止重复提交
            const submitButton = registerForm.querySelector('button[type="submit"]');
            submitButton.disabled = true;
            submitButton.innerHTML = '<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> 注册中...';


            try {
                const response = await fetch('/api/v1/auth/register', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify(registrationData)
                });

                if (response.ok) { // HTTP 状态码 200-299
                    const result = await response.json(); // 假设后端成功时返回 UserDTO
                    let successMessage = `用户 ${result.username} 注册成功！`;
                    
                    // 根据角色显示不同的成功消息
                    if (selectedRole === 'delivery_person') {
                        successMessage += '您已注册为配送员，登录后可以接单配送。';
                    } else {
                        successMessage += '您已注册为普通用户，可以下单和查询订单。';
                    }
                    
                    successMessage += '正在跳转到登录页面...';
                    displayMessage(successMessage, 'success');
                    registerForm.reset(); // 清空表单
                    // 延时后跳转到登录页面
                    setTimeout(() => {
                        window.location.href = '/login.html'; // 或者你配置的登录页面路径
                    }, 3000);
                } else {
                    // 处理错误响应
                    const errorText = await response.text(); // 获取纯文本错误信息
                    let displayError = '注册失败，请稍后重试。';
                    if (response.status === 400) { // Bad Request，通常是业务逻辑错误，如用户名已存在
                        displayError = errorText || '注册失败：输入信息有误或用户名已存在。';
                    } else if (response.status === 500) { // Internal Server Error
                        displayError = '服务器内部错误，请联系管理员。';
                    }
                    displayMessage(displayError, 'danger');
                }
            } catch (error) {
                console.error('Registration request failed:', error);
                displayMessage('注册请求失败，请检查网络连接或联系管理员。', 'danger');
            } finally {
                // 恢复提交按钮
                submitButton.disabled = false;
                submitButton.innerHTML = '注册';
            }
        });
    }

    function displayMessage(message, type = 'info') { // type可以是 'success', 'danger', 'warning', 'info'
        messageArea.innerHTML = `<div class="alert alert-${type}" role="alert">${message}</div>`;
    }

    function clearMessage() {
        messageArea.innerHTML = '';
    }

    // 如果需要邮箱校验
    // function isValidEmail(email) {
    //     const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    //     return emailRegex.test(email);
    // }
});